// let a: number = 123;
// const h1 = document.createElement("h1");
// h1.innerHTML = "Hello, I am Lison";
// document.body.appendChild(h1);

// let bool: boolean = false;
// bool = true;
// // bool = 123; // error 不能将类型"123"分配给类型"boolean"
// alert(bool);

// let str: string;
// const first = "Lison";
// const last = "Li";
// str = `${first} ${last}`;
// alert(str)

// let list1: number[] = [1, 2, 3];
// let list2: Array<number> = [1, 2, 3];
// alert(list1);
// alert(list2);

// let u: undefined = undefined;// 这里可能会报一个tslint的错误：Unnecessary initialization to 'undefined'，就是不能给一个值赋undefined，但我们知道这是可以的，所以如果你的代码规范想让这种代码合理化，可以配置tslint，将"no-unnecessary-initializer"设为false即可
// let n: null = null;
// alert(undefined);
// alert(null);
// let objInit = { a: "aa" };
// let objClone = objInit;
// alert(objClone) // {a:"aa"}
// objInit.a = "bb";
// alert(objClone); // { a: 'bb' }

// let tuple: [string, number, boolean];
// tuple = ["aaa", 1111, true];
// alert(tuple)      //aaa,1111,true

// enum Roles {
//     Admin = 1,
//     User = 3,
//     SuperAdmin = 5
// }
// console.log(Roles.Admin);
// console.log(Roles.User);
// console.log(Roles.SuperAdmin)

// 输出  1 3  5

// let value: any;
// let value1: any;
// let value2: any;
// value = 123;
// value1 = "abc";
// value2 = false;
// console.log(value)
// console.log(value1)
// console.log(value2)
//输出 ：  123  abc   false 

// const consoleText = (text: string): void => {
//     console.log(text);
// };

// const getValue = () => {
//     return 12;
// }
// enum RightIndex {
//     a = getValue(),
//     b = 1,
//     c
// }

// console.log(RightIndex[1]);  //输出 b

class B {
    constructor(public name: string) {
    }
}
const b = new B("aaa");
console.log(b.name)